Skip to main content

Using the RNSA

Access the Jupyter notebook with the code available here!

Importing the Real-Valued Negative Selection Algorithm.

from aisp.NSA import RNSA

Generating dice bubbles for classes randomly.

Using the make_blobs function, two sets of data are generated in the form of bubbles, in the range between 0 and 1, representing each class x and y. Then this data is separated into test and training sets.

from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split

# Generating the samples and outputs for the training.
samples, output = make_blobs(n_samples=500 , n_features=2, cluster_std=0.07, center_box=([0.0, 1.0]), centers=[[0.25, 0.75], [0.75, 0.25]], random_state=1234)
# Separating data for training and testing.
train_x, test_x, train_y, test_y = train_test_split(samples, output, test_size=0.2)

Testing the model default-NSA:

Start the model with 500 detectors, each with a radius of 0.06. Then, it presents the result of the forecast accuracy.

from sklearn.metrics import confusion_matrix, classification_report, accuracy_score

# Starting the class.
model = RNSA(N=500, r=0.06, seed=123)
# Carrying out the training:
model.fit(X=train_x, y=train_y)
# Previewing classes with test samples.
prev_y = model.predict(test_x)
# Showing the accuracy of predictions for actual data.
print(f"The accuracy is {accuracy_score(prev_y, test_y)}")
print(classification_report(test_y, prev_y))

Output:

✔ Non-self detectors for classes (0, 1) successfully generated:  ┇██████████┇ 1000/1000 detectors
The accuracy is 1.0
precision recall f1-score support

0 1.00 1.00 1.00 55
1 1.00 1.00 1.00 45

accuracy 1.00 100
macro avg 1.00 1.00 1.00 100
weighted avg 1.00 1.00 1.00 100

Detector and sample plotting:


Testing the model V-detector:

Start the model with 50 detectors, where the minimum radius is 0.05 and the sample's own radius is 0.04. It then shows the forecast accuracy result.

from sklearn.metrics import confusion_matrix, classification_report, accuracy_score

# Starting the class.
model = RNSA(N=20, r=0.02, algorithm='V-detector', r_s=0.04, seed=123)
# Carrying out the training:
model.fit(X=train_x, y=train_y)
# Previewing classes with test samples.
prev_y = model.predict(test_x)
# Showing the accuracy of predictions for actual data.
print(f"The accuracy is {accuracy_score(prev_y, test_y)}")
print(classification_report(test_y, prev_y))

Output:

✔ Non-self detectors for classes (0, 1) successfully generated:  ┇██████████┇ 40/40 detectors
The accuracy is 1.0
precision recall f1-score support

0 1.00 1.00 1.00 55
1 1.00 1.00 1.00 45

accuracy 1.00 100
macro avg 1.00 1.00 1.00 100
weighted avg 1.00 1.00 1.00 100

Detector and sample plotting: